#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import wx
import certificado_asistencia
import MySQLdb


# nuevo 
# Genero una ventana
class Ventana (wx.App):
    def OnInit(self):
        self.db=MySQLdb.connect(host='localhost', user='agustin', passwd='agustin', db='agustin')
        # Panel donde se apoyan los widgets
        self.ventana = wx.Frame (parent = None, title = 'Ingreso', size = (500,300), pos = (300,200))
        panel = wx.Panel (self.ventana, -1)
        self.ventana.CenterOnScreen()
        
        # Apellido: Ingreso
        t_apellido = wx.StaticText (panel, -1, u'Apellido', pos = (20,25))
        self.i_apellido = wx.TextCtrl (panel, -1, u'', size = (300,30),  pos = (170,20))
        self.i_apellido.SetFocus()
        
        # Nombre: Ingreso
        t_nombre = wx.StaticText (panel, -1, u'Nombre', pos = (20,65))
        self.i_nombre = wx.TextCtrl (panel, -1, u'', size = (300,30),  pos = (170,60))
        
        # Posición: Desplegable
        t_sexo = wx.StaticText (panel, -1, u'Sexo', pos = (20,105))
        l_sexo = ['Masculino', 'Femenino']
        self.d_sexo = wx.ComboBox (panel, -1, u'Femenino', (170,100) , (300,30), l_sexo, wx.CB_DROPDOWN|wx.CB_READONLY)
        
        # Correo electrónico
        t_correo = wx.StaticText (panel, -1, u'Correo Electrónico', pos = (20,145))
        self.i_correo = wx.TextCtrl (panel, -1, u'', size = (300,30),  pos = (170,140))
        
        # Organismo: Ingreso
        t_organismo = wx.StaticText (panel, -1, u'Organismo', pos = (20,180))
        self.i_organismo = wx.TextCtrl (panel, -1, u'', size = (300,30),  pos = (170,180))
        
        # Cargo: Ingreso
        t_cargo = wx.StaticText (panel, -1, u'Cargo', pos = (20,225))
        self.i_cargo = wx.TextCtrl (panel, -1, u'', size = (300,30),  pos = (170,220))
        
        # Aceptar/Cancelar: Botones
        b_aceptar = wx.Button (panel, -1, u'&Aceptar', size = (-1,-1), pos = (300,260))
        b_cancelar = wx.Button (panel, -1, u'&Cancelar', size = (-1,-1), pos = (400,260))
        self.Bind(wx.EVT_BUTTON, self.OnAceptarBoton, b_aceptar)
        self.Bind(wx.EVT_BUTTON, self.OnCancelarBoton, b_cancelar)
        
        self.ventana.Show()
        return True
    
    # Aceptar: Escribir los datos en un archivo txt. con el nombre de el título
    def OnAceptarBoton(self, event):
        
        apellido = self.i_apellido.GetValue()
        nombre = self.i_nombre.GetValue()
        nombreyapellido = self.i_nombre.GetValue() + ' ' + self.i_apellido.GetValue()
        sexo = self.d_sexo.GetValue()
        correo = self.i_correo.GetValue()
        organismo = self.i_organismo.GetValue()
        cargo = self.i_cargo.GetValue()

        cur.execute('INSERT INTO evento (apellido, nombre, sexo, correo electronico, organismo, cargo, telefono) VALUES (apellido, nombre, sexo, correo, organismo, cargo)') 

        
        if sexo == 'Masculino':
            hombres = open ('hombre.txt', 'r')
            numero_h = hombres.readline ()
            hombres.close ()
            hombres = open ('hombre.txt', 'w')
            numero_h = int (numero_h) + 1
            numero_h = str (numero_h)
            hombres.write (numero_h)
            hombres.close()
        else:
            mujeres = open ('mujer.txt', 'r')
            numero_m = mujeres.readline ()
            mujeres.close ()
            mujeres = open ('mujer.txt', 'w')
            numero_m = int (numero_m) + 1
            numero_m = str (numero_m)
            mujeres.write (numero_m)
            mujeres.close()
        
        archivonumero = open('Numero.txt', "r")
        numero = archivonumero.readline()
        archivonumero.close()
        archivonumero = open('Numero.txt', "w")
        numero = int(numero) + 1
        numero = str (numero)
        archivonumero.write(numero)
        archivonumero.close()

        self.ingreso = open('Ingreso.txt', "a")        
        numero = str (numero)
        self.ingreso.write(numero)
        self.ingreso.write(",")
        self.ingreso.write(apellido.encode('utf-8'))
        self.ingreso.write(",")
        self.ingreso.write(nombre.encode('utf-8'))
        self.ingreso.write(",")
        self.ingreso.write(sexo)
        self.ingreso.write(",")
        self.ingreso.write(correo.encode('utf-8'))
        self.ingreso.write(",")
        self.ingreso.write(organismo.encode('utf-8'))
        self.ingreso.write(",")
        self.ingreso.write(cargo.encode('utf-8'))
        self.ingreso.write("\n")
        self.ingreso.close()
        
        # Mensaje: Devolver un mensaje con los datos ingresados
        wx.MessageBox (u'\nNúmero: %s \nApellido: %s \nNombre: %s  \nSexo: %s \nCorreo: %s \nOrganismo: %s  \nCargo: %s' %(numero, apellido, nombre, sexo, correo, organismo, cargo), u'Datos Ingresados', wx.OK | wx.ICON_INFORMATION, None)
        
        # Importar pdf.
        from reportlab.pdfgen import canvas
        from reportlab.lib.units import cm
        from reportlab.lib.pagesizes import legal, landscape
        c = canvas.Canvas("../certificados/certificado_%s.pdf" % nombreyapellido,
         pagesize=landscape(legal))
        certificado_asistencia.certificado(c, nombre, apellido, nombreyapellido, numero)
        c.setFont("Helvetica", 24)
        c.drawString(15*cm, 15.5*cm, nombreyapellido)
        c.drawString(1*cm, 14*cm, nombre)
        c.drawString(1*cm, 13*cm, apellido)
        c.drawString(3*cm, 5*cm, numero)
        c.showPage()
        c.save()
        
        # Borrar: Volver a ventana en blanco.
        apellido = self.i_apellido.SetValue('')
        nombre = self.i_nombre.SetValue('')
        sexo = self.d_sexo.SetValue('')
        correo = self.i_correo.SetValue('')
        organismo = self.i_organismo.SetValue('')
        cargo = self.i_cargo.SetValue('')
    
    # Cancelar: se cierra la ventana        
    def OnCancelarBoton(self, event):
        wx.MessageBox (u'¿Realmente desea cancelar la operación?', u'Atención', wx.CANCEL|wx.ICON_INFORMATION, None)
        self.ventana.Destroy()

        
programa = Ventana()
programa.MainLoop() 


        

